接下來要學習該怎麼使用 Node.js 當中的 fs 模組來進行檔案操作,包括讀取、寫入、更新和刪除檔案。
fs(File System)是 Node.js 的內建模組之一,專門用來處理檔案和目錄操作。它的用途就是進行同步或異步的檔案操作。
首先要做的是引入 fs 模組:
js
const fs = require('fs');
fs.readFile() 用來非同步讀取檔案,並在操作完成後執行回調函數。它的同步版本是 fs.readFileSync()。
js
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log('File content:', data);
});
js
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
fs.writeFile() 用來非同步寫入檔案。如果檔案不存在,則會創建新檔案;如果檔案已存在,則會覆蓋內容。fs.writeFileSync() 是它的同步版本。
js
fs.writeFile('example.txt', 'Hello, Node.js!', (err) => {
if (err) {
console.error('Error writing file:', err);
return;
}
console.log('File written successfully');
});
實際打入 Node.js ,執行結果會如下:
溫馨叮嚀,要以管理員身份執行 Node.js,否則會有權限問題,導致程式錯誤
js
fs.appendFile('example.txt', '\nWelcome to Node.js!', (err) => {
if (err) {
console.error('Error appending file:', err);
return;
}
console.log('Content appended successfully');
});
實際打入 Node.js ,執行結果會如下:
更新檔案最常見的方法就是重新讀取整個檔案內容,修改後再寫回檔案。這可以透過 fs.readFile() 和 fs.writeFile() 結合來完成。
更新檔案內容範例:
js
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
const updatedContent = data.replace('Node.js', 'JavaScript');
fs.writeFile('example.txt', updatedContent, (err) => {
if (err) {
console.error('Error writing file:', err);
return;
}
console.log('File updated successfully');
});
});
實際打入 Node.js ,執行結果會如下:
fs.unlink() 用來刪除檔案,fs.unlinkSync() 是它的同步版本。
js
fs.unlink('example.txt', (err) => {
if (err) {
console.error('Error deleting file:', err);
return;
}
console.log('File deleted successfully');
});
實際打入 Node.js ,執行結果會如下:
除了檔案操作,fs 模組還支援目錄的創建、讀取和刪除。
創建目錄: fs.mkdir() 創建目錄,fs.mkdirSync() 為同步版本。
js
fs.mkdir('newDir', { recursive: true }, (err) => {
if (err) {
console.error('Error creating directory:', err);
return;
}
console.log('Directory created successfully');
});
實際打入 Node.js ,執行結果會如下:
讀取目錄: fs.readdir() 用來讀取目錄中的內容。
js
fs.readdir('.', (err, files) => {
if (err) {
console.error('Error reading directory:', err);
return;
}
console.log('Directory contents:', files);
});
實際打入 Node.js ,執行結果會如下:
刪除目錄: fs.rmdir() 刪除空目錄,fs.rm() 則可以刪除非空目錄。
js
fs.rmdir('newDir', (err) => {
if (err) {
console.error('Error deleting directory:', err);
return;
}
console.log('Directory deleted successfully');
});
實際打入 Node.js ,執行結果會如下:
可以使用 fs.stat() 來獲取檔案或目錄的相關資訊,如大小、修改時間等。
js
fs.stat('example.txt', (err, stats) => {
if (err) {
console.error('Error getting file stats:', err);
return;
}
console.log('File stats:', stats);
});
今天深入探索了 Node.js 的 fs 模組,學習了如何讀取、寫入、更新和刪除檔案,以及進行目錄操作。這些操作是開發應用時處理檔案系統的核心技能,特別是在開發需要大量檔案處理的應用程式時,fs 模組是必備的工具。接下來將繼續探索 Node.js 的其他內建模組,讓可以運用的資源越來越多。